package com.fzf.org.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

import java.util.Arrays;

/**
 * 审计枚举类
 */
@Getter
@AllArgsConstructor
public enum AuditEnums {

    /**
     * 操作类型：下架
     */
    TAKEDOWN(0, "takedown"),
    
    /**
     * 操作类型：审核失败
     */
    REJECTED(1, "rejected"),
    
    /**
     * 操作类型：审核通过
     */
    APPROVED(2, "approved"),

    /*
     * 操作类型：系统操作
     */
    AUTO_REVIEW(0, "autoReview");

    private final Integer value;

    private final String name;
    
    /**
     * 根据值获取枚举实例
     *
     * @param value 枚举值
     * @return 对应的枚举实例，如果未找到则返回null
     */
    public static AuditEnums getByValue(Integer value) {
        if (value == null) {
            return null;
        }
        return Arrays.stream(values())
                .filter(audit -> audit.getValue().equals(value))
                .findFirst()
                .orElse(null);
    }
    
    /**
     * 根据名称获取枚举实例
     *
     * @param name 枚举名称
     * @return 对应的枚举实例，如果未找到则返回null
     */
    public static AuditEnums getByName(String name) {
        if (name == null) {
            return null;
        }
        return Arrays.stream(values())
                .filter(audit -> audit.getName().equals(name))
                .findFirst()
                .orElse(null);
    }
}
